The present disclosure relates to testing of computerized systems, in general, and to simulation based verification of computerized systems, in particular.
Computerized devices control almost every aspect of modern life. However, computerized devices are bug-prone, and thus require a testing phase in which the bugs should be discovered. The testing phase is considered one of the most difficult tasks in designing a computerized device. The cost of a bug may be enormous, as its consequences may be disastrous. For example, an undetected computerized bug may cause the injury of a person relying on the designated behavior of the computerized device. Additionally, such a bug in hardware or firmware may be expensive to fix, as patching such a bug requires call-back of the computerized device. Therefore, many developers of computerized devices invest a large portion, such as 70%, of the development cycle to discover erroneous behaviors of the computerized device.
Some of the testing is performed using stimulis. A stimuli, also referred to as a testing scenario, may comprise a set of instructions to a target computerized system. The stimuli may further comprise a set of initializiation commands to initialize the target computerized system. The stimuli may further comprise a definition of an environment interacting with the target computerized system (also referred to as behavioral commands), such as for example user input, content of data transferred by third-party devices, interrupt raised and the like. The definition of the environment properties stimulate a target computerized system being tested to perform in one manner or another. In some exemplary testing scenarios an order of parallel execution of portions of the target computerized system is defined strictly by the stimuli while in other testing scenarios parallel execution is not defined by the testing scenarios at all.
Testing scenarios are most commonly used in hardware system. In some testing environments the testing scenarios are executed by a simulator of the target computerized system rather than by the target computerized system itself. In some cases, the simulator is an emulator or an accelerator which decreases running time of the stimuli in respect to standard simulators. In other testing environments, the testing scenarios are executed by the target computerized system itself.
Testing scenarios may be generated by a user such as a quality assurance professional or a developer. Testing scenarios may be generated by a computerized generator based on a test template. The test template is a definition of a template that corresponds to a set of testing scenarios. The computerized generator generates a testing scenario based on the test template.
Some exemplary computerized generators randomly generate the testing scenario based on the test template. Other exemplary computerized generators generate the testing scenario in a pseudo-random manner, by biasing the generated testing scenario to hold certain properties, such as repeatedly accessing a memory location, filling a buffer, memory access associated with two memory pages (also referred to as page cross) and the like.